home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Forever 4
/
Atari Forever 4.zip
/
Atari Forever 4.iso
/
PD_THEMA
/
HARDDISK
/
HD_TEST
/
TRANSFER.LST
< prev
next >
Wrap
File List
|
1998-03-14
|
4KB
|
148 lines
Reserve 30000 ! Speicher fürs System freigeben
Maxsecs%=200 ! maximal 200 Sektoren lesen
Drive%=2
Do
A$=" TRANSFERTEST via | BIOS-Routinen| ©1989 Claus Brod| Laufwerk?"
Repeat
If Drive%>-1
Alert 0,A$,2,"⇦|"+Chr$(Drive%+65)+"|⇨",Erg%
Else
Alert 0,A$,2,"⇦|Exit|⇨",Erg%
Endif
If Erg%=1
Dec Drive%
If Drive%<-1
Inc Drive%
Endif
Endif
If Erg%=3
Inc Drive%
If Drive%>15
Drive%=-1
Endif
Endif
Until Erg%=2
Exit If Drive%=-1
' Jetzt ist die Laufwerksnummer eingestellt
A$=Chr$(Drive%+65)+":\*.*"
Showm
Void Gemdos(&H4E,L:Varptr(A$),W:0)
' dieser GEMDOS-Aufruf verhindert, daß ein eventueller Medienwechsel
' vom folgenden BIOS-Aufruf weggeschnappt wird, bevor GEMDOS ihn bemerkt
' Die Showm-Befehle verhindern, daß im Compilat bei Critical-Error-Boxen
' ("Daten auf Disk ? defekt") die Maus verschwindet
Showm
Fehler%=Bios(7,Drive%) ! eventuelle Wechselmeldung löschen, Parameter holen
If Fehler%
Bps%=Dpeek(Fehler%) ! Sektorgröße in Bytes
@Malloc(-1)
If Pointer<Maxsecs%*Bps%+2
Alert 3," Zuwenig Speicher frei! ",0,"Öha",Erg%
Else
@Malloc(Maxsecs%*Bps%+2)
Print
Print "1. TEST MIT GERADEN PUFFERADRESSEN"
Clr Rd%
Loops%=10
Showm
Fehler%=Bios(4,W:0,L:Pointer,W:1,W:1,W:Drive%)
If Fehler%
@Error(Fehler%)
Else
' Laufwerk auf Lesezugriff vorbereiten (Kopf positionieren)
T1%=Timer
For T%=1 To Loops%
T0%=Timer
Fehler%=Bios(4,W:0,L:Pointer,W:Maxsecs%,W:1,W:Drive%)
If Fehler%
T%=Loops%+1
Endif
Add Rd%,Timer-T0%
Showm
Fehler%=Bios(4,W:0,L:Pointer,W:1,W:1,W:Drive%)
Next T%
T2%=Timer
If Fehler%=0
@Zeit(Rd%,Loops%,Maxsecs%)
Print "Mit Positionierung:"
@Zeit(T2%-T1%,Loops%,Maxsecs%)
Else
@Error(Fehler%)
Endif
Endif
Print
Print "2. TEST MIT UNGERADEN PUFFERADRESSEN"
Clr Rd%
Loops%=3
Showm
Fehler%=Bios(4,W:0,L:Pointer,W:1,W:1,W:Drive%)
' Kopf positionieren
If Fehler%
@Error(Fehler%)
Else
T1%=Timer
For T%=1 To Loops%
T0%=Timer
Fehler%=Bios(4,W:0,L:Pointer+1,W:Maxsecs%,W:1,W:Drive%)
If Fehler%
T%=Loops%+1
Endif
Add Rd%,Timer-T0%
Showm
Fehler%=Bios(4,W:0,L:Pointer,W:1,W:1,W:Drive%)
Next T%
T2%=Timer
If Fehler%=0
@Zeit(Rd%,Loops%,Maxsecs%)
Print "Mit Positionierung:"
@Zeit(T2%-T1%,Loops%,Maxsecs%)
Else
@Error(Fehler%)
Endif
Endif
@Mfree(Pointer)
Endif
Else
@Error(0)
Endif
@Taste
Cls
Loop
'
Procedure Zeit(Ticks%,Schleifen%,Secs%)
T=Ticks%/200
Print Using "###.##",T;
Print " Sekunden für ";Using "####.#",Schleifen%*Secs%/2;
Print " KB"
Kbrate=Schleifen%*Secs%*Bps%/(1024*T)
Print "Transferrate: ";Using "####.#",Kbrate;
Print " KByte/s = ";Using "#####.#",Kbrate*8;
Print " KBit/s."
Print
Return
'
Procedure Error(Er%)
Alert 3," Fehler "+Str$(Er%)+" auf | Laufwerk "+Chr$(65+Drive%),0,"Auweh",Erg%
Return
'
Procedure Malloc(Groesse)
Pointer=Gemdos(&H48,L:Groesse)
Return
Procedure Mfree(Addr)
Fehler%=Gemdos(&H49,L:Addr)
Return
'
Procedure Taste
Local T%
Repeat
A$=Inkey$
If Timer-T%>90 And Timer-T%<110
Print At(35,25);String$(13,32);
Endif
If Timer-T%>200
Print At(35,25);"Taste drücken";
T%=Timer
Endif
Until A$<>""
Return